// jdk. file 构造方法
def rootDir = new File('../gssm')

def dirs = []

// groovy. eachDir 方法, 迭代子目录(非递归方式), 把子目录添加进 dirs.
// 注意, it 是 File 类型
rootDir.eachDir { dirs << it }

println '--------------------------------------------'
println dirs
println '--------------------------------------------'
// 通过 dump 方法确认 list 中的元素就是 File 类型
println dirs[0].dump()
println '--------------------------------------------'

// 打印所有子目录的名字
dirs.each { println it.name }
println '--------------------------------------------'

def reDirs = []

// 递归方式
rootDir.eachDirRecurse { reDirs << it }

// 名字中有 main 的目录
println reDirs.grep { it.name =~ /main/ }
println '--------------------------------------------'
// 路径中有 main 的目录
println reDirs.grep { it.absolutePath =~ /main/ }.size()
println '--------------------------------------------'

dirs = []
// 获取 l 打头的目录: logs, lib
rootDir.eachDirMatch(~/^l.*/) {dirs << it }

def files = []

// eachFile 方法会迭代文件和目录.
// 文件和目录都会被加进 files 里面
rootDir.eachFile { files << it }

println files
println '--------------------------------------------'
println files[files.size() - 1].dump()
println '--------------------------------------------'

files = []

// void eachFile(FileType fileType, Closure closure)
// 只把 文件类型的 添加进 files
rootDir.eachFile(groovy.io.FileType.FILES) {
	files << it
}

println files

